﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;

namespace CEP
{

    /// <summary>
    /// Esta classe é utilizada para o serviço entrar em loop na verificação de notificações
    /// </summary>
    class AutoTimer
    {

        Timer timer;

        private static AutoTimer instance = new AutoTimer();
        private AutoTimer() { }

        public static AutoTimer Instance
        {
            get
            {
                return instance;
            }
        }

        /// <summary>
        /// Inicia o timer e entra em loop de X tempo
        /// </summary>
        public void init()
        {
            timer = new Timer();
            //definir o metodo que o timer irá chamar a cada loop
            timer.Elapsed += new ElapsedEventHandler(elapsed);
            //tempo do time (em ms)
            timer.Interval = Properties.Settings.Default.timer;
            //ativar timer!
            timer.Enabled = true;
            timer.Start();
        }

        /// <summary>
        /// Este metodo é chamado pelo 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void elapsed(object sender, EventArgs e)
        {
            //verificar se existem notificações
            Notificar.Instance.init();
        }

        /// <summary>
        /// Para o timer no proximo loop
        /// </summary>
        public void stop()
        {
            timer.Enabled = false;
        }

    }
}
